<script>
export default {
  name: "List",
  data() {
    return {
      info: {
        isFirst: true,
        isLoading: false,
        errMsg: '',
        users: [],
        totalCount: 0
      }
    }
  },
  mounted() {
    // 绑定全局事件总线，使用$bus.$on 进行绑定全局事件总线，前提是需要安装全局事件总线
    this.$bus.$on('updateListData', dataObj => {
      console.log('我是List组件，收到数据：', dataObj);
      // 使用es6的字面量语法，前面和后面的都摊开，重名的属性以后面的为主，后面没有的以前面的属性为准。
      this.info = {...this.info, ...dataObj};
    })
  }
}
</script>

<template>
  <div class="row">
    <!-- 其中开始的时候不显示，之后不是首次的话，就展示 -->
    <h1 v-show="!info.isFirst">搜索结果数量：{{ info.totalCount }}</h1>
    <!-- 展示用户列表 -->
    <div v-show="info.users.length" class="card" v-for="user in info.users" :key="user.id">
      <a :href="user.html_url" target="_blank">
        <img :src="user.avatar_url" style='width: 100px'/>
      </a>
      <p class="card-text">{{ user.login }}</p>
    </div>

    <!-- 展示欢迎词 -->
    <h1 v-show="info.isFirst" class="systemName">欢迎使用Github的检索系统！</h1>

    <!-- 展示加载中 -->
    <h1 v-show="info.isLoading">加载中......</h1>

    <!-- 展示错误信息 -->
    <h1 v-show="info.errMsg">{{ info.msg }}</h1>
  </div>
</template>

<style scoped>
.album {
  min-height: 50rem;
  /* Can be removed; just added for demo purposes */
  padding-top: 3rem;
  padding-bottom: 3rem;
  background-color: #f7f7f7;
}

.card {
  float: left;
  width: 33.333%;
  padding: .75rem;
  margin-bottom: 2rem;
  border: 1px solid #efefef;
  text-align: center;
}

.card > img {
  margin-bottom: .75rem;
  border-radius: 100px;
}

.card-text {
  font-size: 85%;
}

.systemName {
  text-align: center;
  display: block;
  width: 100%;
}
</style>